//
// Created by gejingguo on 16-3-22.
//

#include "Redis.h"

#include <unistd.h>

#define CHECK_REDIS_ERR(msg) if(err){std::cout<<msg<<","<<err->GetCode()<<","<<err->GetMsg()<<std::endl; return -1;}

int main() {
    Redis redis;
    ErrorPtr err = redis.Init("127.0.0.1", 6379, 800);
    CHECK_REDIS_ERR("init");
    std::cout<<"redis init ok."<<std::endl;

    err = redis.Watch("test_key");
    CHECK_REDIS_ERR("watch test_key");
    std::cout<<"redis watch ok."<<std::endl;

    std::string value;
    //err = redis.Get("test_key", value);
    //CHECK_REDIS_ERR("get test_key");
    //std::cout<<"redis get test_key ok, value:"<<value<<std::endl;

    sleep(100);

    err = redis.Multi();
    CHECK_REDIS_ERR("multi");

    err = redis.Set("test_key", "new value for test_key");
    CHECK_REDIS_ERR("set test_key");

    //err = redis.Del("test_key");
    //CHECK_REDIS_ERR("del test_key");

    err = redis.Exec();
    CHECK_REDIS_ERR("exec");
    std::cout<<"multi exec ok."<<std::endl;

    value.clear();
    err = redis.Get("test_key", value);
    CHECK_REDIS_ERR("get test_key");
    std::cout<<"redis get test_key ok, value:"<<value<<std::endl;

    return 0;
}